#!/bin/bash
#规则库配置
#一行代表1条规则配置,排除全局配置中配置的${skipRuleParams}中要跳过校验的字段以外,其他字段都是必须校验的字段,以||为间隔

#1.0 非规则库校验的字段
#skipRuleParams
#serial:序号(唯一) env:执行环境 dev:读取全局配置devConf test:读取全局配置testConf  52zzb:读取全局配置zzbConf  com:读取全局配置comConf 
#isactive:0(不启用该条规则) 1(启用该条规则) 
#cmd:自愈执行命令   

#1.1 自愈执行后校验返回结果
#ischeck: 0(不校验返回结果) 1(校验返回结果)
#returncode(http返回码/执行返回值) returnreqiure(返回内容判断) returntimeout(返回超时时间/连接超时时间,单位秒)

#2.0 规则配置中远程执行方式
#runlevel:0(自定义api) 1(salt-api) 2(免秘钥ssh执行) 3(ssh expect函数执行) 4(ansible远程执行) 5(sshpass) 不存在时:取全局的runlevel

#3.0 规则库配置
#除了skipRuleParams中排除的字段,其他字段为zabbix返回要校验的字段,可以为1个或多个字段(无限制,根据你的zabbix内容设置)
#解释我使用到几个关键字段

#3.1 举例
#triggervalue:{=,1} 条件1: triggervalued=1时,也即故障报警时
#ipaddress:{=,192.167.3.102} 条件2: 故障主机为192.167.3.102
#triggername:{like,Free disk space is less than%} 条件3: 故障名称为Free disk space is less than开头时
#triggerkey:{=,vfs.fs.size[/var,pfree]} 条件4: 故障报警的key,这里指的/var空间不足时
#itemvalue:{lt,20} 条件5: 故障报警key的值,这里指的是/var的空间不足20%时
#以上条件为并且条件,只有都成立时才会触发cmd自愈.也可以只有2个条件或者更多的条件比如条件4和条件2,看你的报警需求

#3.2 规则库的规则格式
#||zabbix设置的key:{条件,预期值}||

#3.3 规则库的支持条件
#数值比较(支持浮点数) gt:大于 lt:小于 ge:大于等于 le:小于等于 eq:等于
#字符串相等 ＝
#模糊匹配 string%: 以string开头	％string: 以string结尾	％string％: 中间包含string   

serial:1||env:dev||isactive:1||triggervalue:{=,1}||ipaddress:{=,192.168.1.5}||triggername:{like,8080 service is down on%}||triggerkey:{=,net.tcp.port[,8080]||itemvalue:{eq,0}||cmd:/bin/bash /usr/local/tomcat/bin/startup.sh  ||ischeck:1||returncode:200||returnreqiure:{like,%started%}||returntimeout:60||runlevel:1
serial:2||env:dev||isactive:1||triggervalue:{=,1}||ipaddress:{like,192.168.1%}||triggername:{like,Free disk space is less than%}||triggerkey:{=,vfs.fs.size[/var,pfree]}||itemvalue:{lt,20}||cmd:echo '' && echo 删除前/var大小&& du -sh /var && find  /var/log/logcenter/ -type f -mtime +10 -exec rm -f  {} \\; &&  echo 10天前的文件删除成功 && echo 删除后/var大小&& du -sh /var||ischeck:1||returncode:0||returnreqiure:{like,%成功%}||returntimeout:60||runlevel:5
serial:3||env:dev||isactive:1||triggervalue:{=,1}||ipaddress:{=,192.168.3.102}||triggername:{like,首页200监控%}||triggerkey:{=,web.test.rspcode[3.102首页,首页]||itemvalue:{=,404}||cmd:/etc/init.d/nginx restart||ischeck:1||returncode:200||returnreqiure:{like,%success%}||returntimeout:60
serial:4||env:dev||isactive:1||triggervalue:{=,1}||ipaddress:{=,192.168.1.9}||triggername:{like,HTTP service is down on%}||triggerkey:{=,net.tcp.service[http]||itemvalue:{=,Down (0)}||cmd:/etc/init.d/nginx restart||ischeck:1||returncode:200||returnreqiure:{like,%success%}||returntimeout:60||runlevel:0
